package com.sixiaojie.flink.dto;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 支付事件数据传输对象
 * 用于记录订单支付状态变更的关键信息
 */
@Data
public class PaymentEvent {
    /**
     * 支付记录唯一标识ID
     * 格式：支付平台交易号或系统生成的UUID
     */
    private String paymentId;

    /**
     * 关联的订单ID
     * 用于与订单系统进行关联
     */
    private String orderId;

    /**
     * 当前支付状态
     * 可选值：
     * - PENDING（待支付）
     * - SUCCESS（支付成功）
     * - FAILED（支付失败）
     * - REFUNDED（已退款）
     * - PARTIAL_REFUND（部分退款）
     */
    private String status;

    /**
     * 支付金额
     * 单位：元
     * 精度：小数点后2位
     * 示例：new BigDecimal("299.99")
     */
    private BigDecimal amount;

    /**
     * 事件创建时间
     * 默认值为对象创建时的系统时间
     * 格式：ISO-8601 (yyyy-MM-dd'T'HH:mm:ss)
     * 注意：与支付平台实际交易时间可能略有差异
     */
    private LocalDateTime eventTime = LocalDateTime.now();
}